CREATE PROC [dbo].[Cash_SaveMultilplePrescription] @MultipleUserId SMALLINT , @StationNo SMALLINT
AS
BEGIN
    DECLARE @IsCashPayment BIT = 1,
            @ResultNo NUMERIC(18, 0),
            @PrescriptionId NUMERIC(18, 0),
            @KindSave SMALLINT,
            @ResultMessage NVARCHAR(MAX),
            @PrescriptionNumber VARCHAR(8),
            @PrescriptionType SMALLINT,            
            @Id UNIQUEIDENTIFIER,
            @CheckedUser SMALLINT;
    DECLARE @PrescriptionResult TABLE
    (
        PrescriptionId NUMERIC(18, 0) PRIMARY KEY,
        PrescriptionType SMALLINT,
        KindSave SMALLINT,
        Result NUMERIC(18, 0),
        ResultMessage NVARCHAR(MAX)
    );

    DECLARE MultilplePrescriptionCursor CURSOR FOR
    SELECT Id,
           Id_Havaleh,
           Nu_Forosh,
           Kind_Flag,
           kind_Save,
           Computer_Code,
           ISNULL(CheckU, 0)
    FROM dbo.TmpDrugH
    WHERE kind_Save IN ( 2, 3 )
          AND MultipleFactorUserId = @MultipleUserId
    ORDER BY Id_Havaleh;
    OPEN MultilplePrescriptionCursor;
    FETCH NEXT FROM MultilplePrescriptionCursor
    INTO @Id,
         @PrescriptionId,
         @PrescriptionNumber,
         @PrescriptionType,
         @KindSave,
         @StationNo,
         @CheckedUser;
    BEGIN TRY
        BEGIN TRAN;
        WHILE @@FETCH_STATUS = 0
        BEGIN
            UPDATE dbo.TmpDrugH
            SET User_Cash = @MultipleUserId,
                Tarikh = GETDATE()
            WHERE Id_Havaleh = @PrescriptionId;
            EXEC dbo.Sodor_Factor_Drug @Msg_Num = @ResultNo OUTPUT,
                                       @TmpId = @PrescriptionId; -- numeric(18, 0)
            IF @ResultNo = -1
                SET @ResultMessage
                    = N' ǘ  : ' + @PrescriptionNumber + N'    ǘ  ';
            ELSE IF @ResultNo = -2
                SET @ResultMessage
                    = N' ǘ  : ' + @PrescriptionNumber
                      + N'      ǘ         ';
            ELSE IF @ResultNo = -3
                SET @ResultMessage
                    = N' ǘ  : ' + @PrescriptionNumber
                      + N'            ';
            ELSE IF @ResultNo = -6
                SET @ResultMessage
                    = N' ǘ  : ' + @PrescriptionNumber
                      + N'          ';
            ELSE IF @ResultNo = 0
                    OR @ResultNo = -5
                SET @ResultMessage = N' :     ǘ ' + @PrescriptionNumber;
            ELSE
            BEGIN
                SET @ResultMessage = N'    ';
                IF @PrescriptionType = 1
                BEGIN
                    INSERT INTO dbo.TrackingPrescription
                    (
                        prescriptionId,
                        userId,
                        CreatedOn,
                        Status,
                        StationNo
                    )
                    VALUES
                    (@Id, @MultipleUserId, GETDATE(), 3, @StationNo);
                    IF @CheckedUser = 0
                        INSERT INTO dbo.TrackingPrescription
                        (
                            prescriptionId,
                            userId,
                            CreatedOn,
                            Status,
                            StationNo
                        )
                        VALUES
                        (@Id, @MultipleUserId, GETDATE(), 7, @StationNo);


                END;
            END;
            INSERT INTO @PrescriptionResult
            VALUES
            (@PrescriptionId, @PrescriptionType, @KindSave, @ResultNo, @ResultMessage);
            IF @ResultNo <= 0
            BEGIN
                DELETE FROM @PrescriptionResult
                WHERE @ResultNo > 0;
                RAISERROR('Error raised in Save Prscription .', 16, 1);
            END;
            FETCH NEXT FROM MultilplePrescriptionCursor
            INTO @Id,
                 @PrescriptionId,
                 @PrescriptionNumber,
                 @PrescriptionType,
                 @KindSave,
                 @StationNo,
                 @CheckedUser;
        END;
        CLOSE MultilplePrescriptionCursor;
        DEALLOCATE MultilplePrescriptionCursor;
        COMMIT TRAN;

    END TRY
    BEGIN CATCH
        CLOSE MultilplePrescriptionCursor;
        DEALLOCATE MultilplePrescriptionCursor;
        ROLLBACK TRAN;
    END CATCH;

    SELECT pr.PrescriptionId,
           pr.PrescriptionType,
           KindSave,
           Result,
           ResultMessage,
           dh.Sazman_Code InsuranceCode,
           PrescriptionNumber = CASE
                                    WHEN pr.PrescriptionType = 1 THEN
                                        dh.Nu_Forosh
                                    ELSE
                                        dh.Nu_Bargasht_Forosh
                                END
    FROM @PrescriptionResult pr
        LEFT JOIN dbo.DrugH dh
            ON dh.Id_Havaleh = pr.Result
    ORDER BY dh.Id_Havaleh;
END;
